// 引用express框架
const express = require("express")
// 引用路径模块
const path = require('path')
// 引入body-parser模块用来处理post请求参数
const bodyParser = require('body-parser')
// 引入express-session
const session = require("express-session")
// 导入art-template模版引擎
const template = require('art-template')
// 导入dateformat第三方模块
const dateFormat = require('dateformat')
// 导入morgan第三方模块
const morgan = require('morgan')
// 导入config模块
const config = require('config')
// 创建网站服务器
const app = express()
// 数据库连接
require('./model/connect')
// require('./model/User')
// 处理post请求
app.use(bodyParser.urlencoded({ extended: false }))
// 添加session
app.use(session({ secret: "secret Key" }))
// 告诉express框架模板所在位置
app.set('views', path.join(__dirname, 'views'))
// 告诉express框架模板默认后缀是什么
app.set('view engine', 'art')
// 当渲染后缀为art的模板时, 所使用的模板引擎是什么
app.engine('art', require("express-art-template"))
// 向模版中导入dateformate变量
template.defaults.imports.dateFormat = dateFormat
// 开发静态资源文件
app.use(express.static(path.join(__dirname, 'public')))
// 拦截请求 判断用户登录状态
app.use('/admin', require('./middleWare/loginGuard'))
// 引入路由模块
const home = require('./route/home')
const admin = require('./route/admin')

console.log(config.get('title'))

if (process.env.NODE_ENV === 'development') {
    console.log("当前是开发环境")
    app.use(morgan('dev'))
} else if (process.env.NODE_ENV === 'production') {
    console.log("当前是生产环境")
}

// 为路由匹配路径
app.use('/home', home)
app.use('/admin', admin)

// admin页面兜底
app.use((err, req, res, next) => {
    const result = JSON.parse(err);
    let params = [];
    for (let attr in result) {
        if (attr != 'path') {
            params.push(attr + '=' + result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`)
})
// 监听端口
app.listen(80)

console.log("网站服务器启动成功, 请访问localhost")